Error rate estimation/application to code-rate adaption

ABSTRACT

The disclosure proposes bit-error-rate (BER) and symbol-error-rate (SER) estimation techniques and its application to incremental-redundancy and rate-adaptation for modern-coded hybrid-ARQ systems. In particular, BER/SER estimators are proposed based on iterative refinement of mixture-density modeling of the bit/symbol decision metrics. For hybrid-ARQ systems, rate-adaptation functions are proposed based on BER/SER estimators for failed transmissions. Methods are disclosed for code-rate selection based on successfully decoded blocks as well as incremental parity size selection for retransmission of failed blocks Techniques disclosed here apply to forward-error-correction codes employed for digital data communication systems.

BACKGROUND OF THE INVENTION

The disclosure relates generally to error correction techniques for data communications and more specifically to forward error correction techniques.

1.1 Forward Error Correction and Modern Codes

Forward error correction (FEC) (also known as channel coding) is an indispensable part of modern digital communication systems, especially wireless digital communication systems where the information-bearing signals undergo severe distortion during propagation through the wireless medium (channel). Forward error correction helps combat such deleterious effects by introducing structured redundancy in the transmitted signals.

When describing the operation of FEC, information messages are often modeled as K-bit words b=(b₁, b₂, . . . , b_(K)), where each message bit b_(k) can assume one of two values, ‘0’ or ‘1’. The vector b is called a binary message (data) block. A binary (N, K) FEC code (also known as a channel code) is a collection of 2^(K) N-bit codewords where N>K such that one codeword corresponds to each possible message word. An binary FEC encoder (referred to herein simply as an encoder) for an (N,K) binary FEC code maps a K-bit message block b=(b₁, b₂, . . . b_(K)) to an N-bit codeword c=(c₁, c₂, . . . c_(N)) in a deterministic fashion. In a binary systematic code the message block appears explicitly as part of the corresponding codeword, e.g. c₁=b₁, c₂=b₂, . . . , c_(K)=b_(K). In a systematic codeword, bits other than message bits are called parity bits. The number of parity bits in a systematic code is, therefore, P=N−K. The code rate of a (N,K) code is defined to be R=K/N=K/(K+P). Lower code rates indicate higher redundancy (more parity) as compared to higher code rates.

A binary FEC decoder performs the inverse operation by estimating the intended message word from the received word. The received word is denoted by λ_(in)=(λ_(in,1), λ_(in,2), . . . , λ_(in,N)), where λ_(in,j) is the received value for the jth codeword bit as input to the decoder. The received values summarize the effects of all operations performed starting from the output of the encoder on the transmit-side, to the input of the decoder on the receive-side, such as modulation, transmission through the physical channel, demodulation. In general the received values may or may not be binary (i.e. ‘0’ or ‘1’). If {λ_(in,j)} values are binary, the decoder is said to have hard-inputs, otherwise it is said to have soft-inputs. A common example of soft-inputs is the log-likelihood ratios for codeword bits which take values other than ‘0’ or ‘1’. The log-likelihood ratio (LLR) of a bit is the natural logarithm of the ratio of the empirical (computed) probability that the bit has the value ‘0’, to the empirical probability that the bit has the value ‘1’.

$\begin{matrix} {\lambda_{{i\; n},k} = {\log \frac{p\left( {c_{k} = 0} \right)}{p\left( {c_{k} = 1} \right)}}} & \left( {1.1{.1}} \right) \end{matrix}$

Other variants of soft-information input to the decoder, such as probability values, are equivalent to LLRs in the sense that one can be obtained from the other, for example, p(c_(k)=0)=1/(1+ exp(−λ_(in,k))). For this reason, without loss of generality, soft-information regarding a particular bit is assumed to be a log-likelihood-ratio.

Since the introduction of the (binary) turbo decoder which demonstrated unprecedented near-capacity performance, modern binary codes with related structure (low-density parity-check codes, serially-concatenated convolutional codes, repeat-accumulate codes and variants, turbo-product codes, etc.) has been a popular topic of research and development. Decoders for modern or turbo-like codes (operate by computing a posteriori LLRs or equivalent metrics for the message bits based on the input soft information λ_(in). We denote this output soft-information as

$\begin{matrix} {\lambda_{k} \approx {\log \; \frac{p\left( {b_{k} = {0\left\{ {\lambda_{{i\; n},n},{n = 1},\ldots \mspace{11mu},N} \right\}}} \right)}{p\left( {b_{k} = {1\left\{ {\lambda_{{i\; n},n},{n = 1},\ldots \mspace{11mu},N} \right\}}} \right)}}} & \left( {1.1{.2}} \right) \end{matrix}$

where ≅ indicates the fact that the computation of the right-hand side of equation (1.1.2) may be inexact for a practical decoder. Bit decisions are delivered by looking at the sign of the output metrics of equation (1.1.2), therefore they are also called as bit decision-metrics. A positive value of a bit decision metric (as defined by equation (1.1.2)) yields a decision of ‘0’, whereas a negative value results in a bit decision ‘1’.

The number of bit errors in the decoded block is denoted by K_(E). The instantaneous bit-error-rate (BER) is defined to be the fraction of bits in error for a particular block, and is denoted by equation (1.1.3):

$\begin{matrix} {\mu_{E} = \frac{K_{E}}{K}} & \left( {1.1{.3}} \right) \end{matrix}$

Non-Binary Codes

In addition to binary codes, non-binary codes may also be constructed in which information symbols {b_(k), k=1, . . . , K} belong to an alphabet F_(b) and codeword symbols {c_(n), n=1, . . . , N} belong to an alphabet F_(c), and at least one of F_(b) and F_(c) is non-binary. A non-binary code can be regarded as systematic if there is a one-to-one function ƒ:F_(b) ^(M)→F_(c) such that ƒ(b_(mM+1), b_(mM+2) b_((m+1)M))=c_(m), m=1,2, . . . , K, i.e. if the information symbols can be grouped in M-tuples to produce the systematic codeword symbols, where M=log|F_(c)|/log|F_(b)|≧1. In this case, the code can be regarded as a systematic code with rate R=K/(K+PM) where P=(N−K). The quantity P can be regarded as the number of parity symbols. For example, if F₁={0,1} (binary) and F_(c)={0,1,2,3}, and c_(k)=2b_(2k)+b_(2k+1)(M=2), the codeword symbols c₁, c₂, . . . c_(K) are systematic symbols.

For a non-binary systematic code, the decoder may accept lists of symbol probabilities {right arrow over (λ)}_(in,n)={p(c_(n)=c}, cεF_(c)}, n=1, . . . , N, as input and compute output symbol probabilities for the systematic symbols, {p(c_(k)=c|{{right arrow over (λ)}_(in,n),n=1, . . . , N}), cεF_(c)} for k=1,2, . . . K. Contrary to the binary-alphabet case, the set of probabilities for a non-binary symbol alphabet cannot be summarized by a single scalar value.

A list of |F|−1 probability values should be maintained for each symbol for an alphabet size of |F|. The a posteriori symbol probabilities can then be computed by simply summing over those output symbol probabilities which are consistent with the symbol value. Mathematically,

$\begin{matrix} {{p\left( {b_{{mM} + i} = {b\left\{ {{\overset{\rightarrow}{\lambda}}_{{i\; n},n},{n = 1},\ldots \mspace{11mu},N} \right\}}} \right)} = {\sum\limits_{c \in {S_{i}{(b)}}}{p\left( {c_{k}\left\{ {{\overset{->}{\lambda}}_{{i\; n},n},{n = 1},\ldots \mspace{11mu},N} \right\}} \right)}}} & \left( {1.1{.4}} \right) \end{matrix}$

where S_(i)(b) is the subset of F_(c) consisting of those c values for which c=ƒ(b_(mM+1) b_(mM+2) b_((m+1)M)) with b_(mM+i)=b. The decoder would then deliver symbol estimates for input symbol b_(m) by choosing the most-likely symbol, i.e. the decoder would declare b_(m)=b_(EST,m) where b_(EST,m)=arg max_(bεFb)p(b_(mM+i)=b|{{right arrow over (λ)}_(in,n),n=1, . . . , N}). In this case, an instantaneous symbol error rate (SER) can be computed analogously to equation (1.3), as the ratio of erroneous input symbols in the decoded block.

1.2 Adaptive-Coding and Incremental/Decremental Redundancy

Digital communication systems can benefit from using multiple code-rates by using lower code rates when the channel is unreliable, thereby reducing the probability of erroneous reception, and by using higher code rates when the channel is favorable, limiting the amount of overhead for reliable communication. The use of different code rates for matching the channel reliability is referred to as adaptive coding. Adaptive coding is a particular means of link adaptation, which is a generic term for methods of changing the attributes of a transmitted signal based on the conditions of the radio link. In adaptive coding, the signal attribute that is changed is the code rate.

The implementation of adaptive coding is facilitated by the use of a systematic (K+P, K) binary code, in which subsets of parity bits are punctured to achieve higher rates than the mother code rate R=K/(K+P). Punctured parity bits are not transmitted as part of the final codeword. On the receive-end, the decoder simply depunctures the corresponding punctured bits by declaring a zero input soft-information for the corresponding locations of the received word. For an input message size of K bits, a family

of code rates can be obtained by varying the amount of puncturing:

$\begin{matrix} {= \left\{ {R_{i} = {\frac{K}{K + P_{i}}:{0 < P_{i} \leq P_{\max}}}} \right\}} & \left( {1.2{.1}} \right) \end{matrix}$

Such a family of codes is called a rate-compatible systematic code family. An example of a rate-compatible systematic code family is the Flexible-LDPC (F-LDPC) codes of TrellisWare Technologies.

Adaptive coding (as all forms of link-adaptation) assumes feedback from the receive-side to the transmit-side regarding prevalent channel conditions. In its simplest form, the feedback information from the receive-side is an acknowledgement (ACK) message for a block or groups of blocks that are estimated to be error-free by means of an outer error-detection encoding circuit (separate from the FEC which may or may not exist). The arrival of a negative acknowledgement (NAK) message at the transmit-side is interpreted as a failure and retransmission of blocks is requested. This is the operation principle of the basic Automatic Repeat reQuest (ARQ) protocol.

When the communication system has a (systematic) FEC code, a hybrid-ARQ (H-ARQ) protocol can be employed for increased efficiency. In type-II H-ARQ, a block of message bits are first transmitted without the parity bits originating from the FEC, with only extra bits originating from the error-detection scheme. If error detection passes on the receive side, an ACK is sent. If the receive-side error detection indicates presence of errors (failed block), a NAK is issued and a retransmission of only parity bits (originating from the encoding of the message bits and the error-detection bits) is generated. If parity transmission fails as well, the algorithm repeats and message bits (as well as error detection bits) are retransmitted. The decoder can then combine the two copies of received message words to achieve a greater reliability.

When the system is equipped with a rate-compatible systematic FEC, a finer resolution of code rates could be used for retransmissions, by incrementally transmitting more parity bits until error-detection passes. This general incremental parity-retransmission scheme is known as incremental-redundancy protocol. An incremental-decremental redundancy scheme comprises a method for determining the incremental parity size following a NAK, and a method for determining the code-rate to be used for a new data packet following an ACK. The latter rate is called the initial transmission rate.

The efficacy of an incremental-redundancy scheme is determined by its average throughput, which is the average amount of information transmitted per unit time. The throughput usually includes penalties for extra parity requests as well as retransmissions.

If the incremental parity step is too small, it may take many parity requests and retransmissions to receive an ACK, and the average throughput is diminished by the protocol overhead. Even though the throughput cost of a parity request may be low, significant latency for successful decoding of blocks may hinder practicality. If the parity step is too large, the FEC may be operating in a much lower rate than it could, leading to reduced throughput through unnecessarily high number of parity bits during favorable communication conditions.

One shortcoming of the aforementioned incremental-redundancy scheme is the inability to adjust to improving channel conditions. Consider a scenario where the channel condition is improving during the course of a series of transmitted blocks, so that blocks could be encoded using fewer parity bits (less redundancy) while being successfully decoded. However, after the receiving of an ACK for the one of these blocks, an incremental-redundancy scheme may not be able to reduce the overhead for subsequent blocks unless the transmit side goes through all the incremental-parity steps starting from the highest code-rate (which may just be uncoded transmission), causing a significant reduction in throughput.

Techniques that overcome these and other shortcomings of conventional coded ARQ techniques are desired.

SUMMARY

Embodiments of the disclosure provide techniques for forward-error correction. System and methods are provided for determining the retransmission parity size in an incremental redundancy system based on instantaneous bit error rate (BER) or symbol error rate (SER) estimation. System and methods are provided for estimating instantaneous BER/SER based on the Gaussian mixture-modeling of soft-decisions on the decoded bits or symbols. System and methods are provided for determining the initial code rate in an incremental system based on the Gaussian mixture modeling.

According to an embodiment of the disclosure, a method for transmitting data is provided. The method includes transmitting a first set of data encoded at a first data rate to a receiver, where the first block of data includes a first number of data bits and a first number of parity bits, receiving a first estimated number of bit errors for the first set of data from the receiver, determining a first instantaneous bit error rate for the first set of data based upon the estimated number of bit errors received from the receiver, determining a second data rate as a function of the first data rate and the first instantaneous BER, and transmitting a second block of data encoded at the second data rate to the receiver.

According to another embodiment of the disclosure, a receiver is provided. The receiver is configured to receive a first block of data encoded at a first data rate from a transmitter, where the first block of data includes a first number of data bits and a first number of parity bits, and to determine a first estimated number of bit errors for the first block of data from the receiver. The receiver is further configured to determine a first instantaneous bit error rate for the first set of data based upon the estimated number of bit errors in the first block of data, and to determine a second data rate as a function of the first data rate and the first instantaneous BER. The receiver is also configured to communicate a feedback message to the transmitter indicating that the transmitter should transmit subsequent blocks of data to the receiver using the second data rate, and to receive a second block of data from the transmitter encoded at the second data rate.

According to yet another embodiment of the disclosure, a system for data communication is provided. The system includes a receiver and a transmitter configured to transmit data to the receiver across a communication channel. The transmitter is further configured to transmit a first set of data encoded at a first data rate to the receiver, wherein the first set of data includes a first number of data bits and a first number of parity bits, to receive feedback data from the receiver indicative of channel conditions in response to transmitting the first set of data to receiver; and to transmit a second set of data encoded at a second data rate to the receiver, wherein the second data rate is determined based upon the feedback data received from the receiver. The receiver is configured to receive the first set of data encoded at the first data rate from the transmitter, to determine a first estimated number of bit errors for the first set of data, determine a first instantaneous bit error rate for the first set of data based upon the estimated number of bit errors in the first block of data, to determine a second data rate as a function of the first data rate and the first instantaneous, to transmit a feedback message to the transmitter requesting that the transmitter transmit subsequent blocks of data to the receiver using the second data rate, and to receive the second set of data from the transmitter encoded at the second data rate.

Other features and capabilities of the disclosed embodiments will be apparent in view of the following detailed description and figures.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating the application of an incremental-decremental redundancy technique.

FIG. 2 is a block diagram illustrating a rate-adapter.

FIG. 3 is a block diagram illustrating another rate-adapter.

FIG. 4 is a block diagram illustrating a BER/SER estimator.

FIG. 5 is a block diagram illustrating a BER/SER estimator.

FIG. 6 is a block diagram a communication system implementing incremental-decremental redundancy with rate-adaptation based on BER/SER estimation.

FIG. 7 is a block diagram of a F-LDPC Encoder.

FIG. 8 is chart illustrating a comparison of the throughput of the incremental-decremental redundancy scheme shown in FIG. 6 in comparison to capacity with binary signal sets in AWGN, as a function of the channel SNR.

FIG. 9 is a chart illustrating the throughput of the incremental-decremental redundancy scheme—over two AR1 channels.

FIG. 10 is a chart illustrating sample channel-gain sequences for two AR1 channels.

DETAILED DESCRIPTION OF THE INVENTION

Embodiments according to the disclosure provide techniques for forward-error correction that overcome the limitations of conventional hybrid-ARQ techniques, such as those described above. System and methods are provided for decreasing the transmitted redundancy data when channel conditions improve and for increasing the transmitted redundancy data when channel conditions deteriorate.

Embodiments according to the disclosure provide bit-error-rate (BER) and symbol-error-rate (SER) estimation techniques and its application to incremental-redundancy and rate-adaptation for modern-coded hybrid-ARQ systems. BER/SER estimators based on iterative refinement of mixture-density modeling of the bit/symbol decision metrics are disclosed. Hybrid-ARQ system rate-adaptation functions are described that are based on BER/SER estimators for failed transmissions. Methods are disclosed for code-rate selection based on successfully decoded blocks as well as incremental parity size selection for retransmission of failed blocks. Techniques disclosed here may be applied to forward-error-correction codes employed for digital data communication systems.

FIG. 1 illustrates communications between a transmitter and receiver using an incremental/decremental redundancy protocol according to an embodiment of the disclosure. The embodiment provided in FIG. 1 illustrates a code-rate increase (also referred to herein as “decremental redundancy”) following an ACK indicating that the receiver successfully received and decoded a block of data from the transmitter, and also illustrates a parity request following a NAK indicating that the receiver was not able to successfully decode a block of data received from the transmitter due to errors. The FEC-based ARQ protocol illustrated in FIG. 1 maximizes the average throughput across a communication channel by varying the code-rate of the data based upon perceived channel conditions.

A code-rate increase may be implemented if the receiver is able to successfully decode a block of data transmitted, which indicates that the number of parity bits transmitted with each block of data may be able to be decreased for the current channel conditions. Decreasing the number of parity bits that are transmitted with each block of data allows more data to be transmitted over the channel, thereby increasing throughput across the channel while retaining the error-free nature of the transmission. Conversely, in the event that the receiver fails to decode a block of data and sends a NAK to the transmitter, the transmitter may send a set of additional parity bits to the receiver in response to the NAK that may enable the receiver to decode the block of data that the receiver failed to decode. The transmitter may also increase coding redundancy for subsequent blocks of data.

FIG. 1 illustrates a series of blocks of data (101, 111, 121, and 131) received by the receiver and corresponding acknowledgements (ACKs) (118, 128, and 138) or negative acknowledgements (NAKs) (108) sent to the transmitter by the receiver to indicate whether the block of data preceding the ACK or NAK was received and decoded without errors. Each block of data (101, 111, 121, and 131) includes K data bits and P parity bits. Block 101 includes a first number of parity bits P₀.

According to the embodiment illustrated in FIG. 1, the transmitter receives block 101, but the transmitter is unable to decode the data due to errors in the received block of data. In response to block 101, the transmitter transmits NAK 108 to the transmitter to indicate that errors occurred, and in response to receiving NAK 108, the transmitter transmits an additional set of parity bits 109 to the receiver. Upon receiving the additional set of parity bits 109, the receiver once again attempts to decode the block of data 102 using the additional parity bits 109 as well as the first number of parity bits P₀ that were transmitted as part of the block of data 101.

In the embodiment illustrated in FIG. 1, the receiver is able to successfully decode block of data 101 using the additional parity bits 109, and sends an ACK 110 to the transmitter indicating that the receiver was successfully able to decode block of data 101 using the additional parity bits 109. In response, the transmitter increases the number of parity bits transmitted with subsequent blocks of data.

The transmitter transmits the next block of data (block 111) which includes P₁ parity bits, where P₁ equals the number of parity bits from the first block (P₀) plus the number of parity bits that were included in the additional parity bits 109. The receiver receives block 111, successfully decodes the block of data without errors, and transmits ACK 120 to the transmitter.

The transmitter then transmits block of data 121 with P₁ parity bits. The receiver receives and decodes block 121 and sends ACK 130 to the transmitter. In response to ACK 130, the transmitter adjusts the encoding rate. The receiver has received the last two blocks of data without error, which may have been due to improved channel conditions or due to the increased redundancy introduced by increasing the number of parity bits transmitted with each block of data. The transmitter decreases redundancy of the next block of data by reducing the number of parity bits to P2, where P2 is equal to the previous number of parity bits P1 included with each block of data minus decremented by a delta P1. Delta P1 is determined based upon current channel conditions with the resulting P2 value intended to reduce redundancy and to maximize the amount of data that can be transmitted across the channel.

FIG. 1 merely illustrates embodiment of the techniques for improving data throughput disclosed herein. One skilled in the art will recognize that many variation of the Additional embodiments described below illustrate techniques for determining the number of parity bits to be included in each block of data in response to changing channel conditions.

Various techniques for incremental/decremental redundancy are described in detail below. These techniques include:

-   -   (1) techniques for incremental-redundancy using an estimate of         the instantaneous bit-error-rate/symbol-error-rate         (instantaneous BER/SER), described in Section 2.1.     -   (2) techniques for estimating the instantaneous-BER using         channel observations and/or the bit decision metrics using an         FEC decoder, described in Section 2.2.

FIGS. 2-5 provide exemplary implementations of these techniques according to embodiments of the disclosure. FIGS. 2 and 3 are block diagrams of illustrating two implementations of rate-adaptors according to embodiments of the disclosure, and FIGS. 4 and 5 are block diagrams illustrating two implementations of BER/SER estimators according to embodiments of the disclosure. The rate-adaptors illustrated in FIGS. 2 and 3 and the BER/SER estimators illustrated in FIGS. 4 and 5 may be used in the implementation a communication system using incremental/redundancy, such as that illustrated in FIG. 6.

Based on the two techniques describe above, an incremental/decremental redundancy scheme is provided, which constitutes:

-   -   (3) Techniques for incremental/decremental redundancy         implemented using the BER/SER estimation of (2), described in         Section 2.3.

Some embodiments of the disclosure may also include an error-detection encoder preceding the FEC encoder. The error detection encoder appends to the set of information symbols {b_(m)} a set of check symbols {a_(m)} computed as a function of {b_(m)}. According to a preferred embodiment, the number of error-detection symbols {a_(m)} is much smaller than the number of information symbols, so that the number of error-detection symbols can be ignored in rate-adaptation computation. The presence of the error detection symbols, however, is accounted for in the throughput computations of Section 2.4.

The techniques described herein apply to any binary FEC decoder that delivers data bit estimates by thresholding bit-decision variables as in equation (1.1.2), or to any non-binary FEC decoder that computes likelihoods or probabilities for information symbols as in equation (1.1.4). Moreover, no specific assumptions are made as to the nature of the communication channel.

FIG. 2 is a block diagram of a rate-adaptor according to an embodiment of the disclosure. Rate-adaptor 200 illustrates another embodiment of a rate-adaptor that is configured to determine an updated rate using different techniques than rate-adaptor 250. Rate-adaptor 200 is configured to output updated rate 210 based upon current rate 206, the number of information bits/symbols K, and estimated number of bits/symbols in error K_(E,EST) and estimated error rate 252. Updated rate 210 may be determined using the techniques described herein. Embodiments of rate-adaptor 200 may be implemented as hardware, software, or a combination thereof.

FIG. 3 is a block diagram of another rate-adaptor according to an embodiment of the disclosure. Rate-adaptor 350 is configured to output updated rate 360 based upon current rate 356 and estimated error rate 352. Estimated error rate 352 is the estimated bit error rate (BER) for binary codes and the estimated symbol error rate (SER) for non-binary codes. Updated rate 360 is may be determined using the techniques described herein. Embodiments of rate-adaptor 350 may be implemented as hardware, software, or a combination thereof.

FIG. 4 is a block diagram of a BER/SER estimator according to an embodiment of the disclosure. BER/SER estimator 400 illustrates another embodiment of a BER/SER estimator that is configured to determine the using different techniques than BER/SER estimator 450. BER/SER estimator 400 is configured to output an estimated number of bits/symbols in error 410 based upon soft information on bits/symbols (λ_(j)) 402, and the number of information bits/symbols K 404. Estimated BER/SER 410 may be determined using the techniques described herein for determining BER/SER estimates. Embodiments of BER/SER estimator 400 may be implemented as hardware, software, or a combination thereof.

FIG. 5 is a block diagram of another BER/SER estimator according to a embodiment of the disclosure. BER/SER estimator 550 is configured to output an estimated number of bits/symbols in error 560 based upon soft information on bits/symbols (λ_(j)) 554. Estimated number of bits/symbols in error 560 is may be determined using the techniques described herein for computing BER/SER estimates. Embodiments of BER/SER estimator 550 may be implemented as hardware, software, or a combination thereof.

FIG. 6 is a block diagram of a communication system 600 using incremental/decremental redundancy according to an embodiment of the disclosure. Communication 600 represents both the transmitter and the receiver components of a communication system and the interaction between these components. The transmitter (not shown) is configured to transmit data to the receiver via communication channel 614. The transmitter (not shown) comprises rate-compatible FEC encoder 606, a modulator 610, and an optional error-detection (ED) encoder 602. The receiver (now shown) includes demodulator 618, FEC decoder 622, an optional error-detection (ED) decoder 626, BER/SER Estimator 628, and Rate-Adaptor 634. Rate-Adaptor 634 is linked to the rate-compatible FEC encoder 606 via feedback path 636. Feedback path 636 may be same as communication channel 614, a different communication channel, or an alternate communication medium that enables data to be communicated from rate-adaptor 634 to rate-compatible FEC encoder 606.

Optional ED encoder 602 receives information symbols 601 representing the contents of a message to be transmitted to the receiver. ED encoder 602 encodes information symbols 601 and outputs ED-encoded symbols 604 which are then input to rate-compatible FEC encoder 606. In embodiments where ED encoder 602 is omitted, information symbols 601 are input directly to rate-compatible FEC encoder 606.

Rate-compatible FEC encoder 606 FEC encoder receives data to be encoded, and outputs a set of codeword symbols 608 that are input into modulator 610. Encoding the data adds redundancy in the form of parity bits that assist FEC decoder 622 on the receiver side to recover from some errors introduced during transmission, such as due to adverse channel conditions. Rate-compatible FEC encoder 606 also receives feedback messages from rate-adaptor 634 via feedback path 636. Rate-compatible FEC encoder 606 adjusts the rate according to the feedback messages received from rate-adaptor 634. Rate-adaptor 634 may send a message to rate-compatible FEC encoder 606 suggesting that rate-compatible FEC encoder 606 use a rate having higher redundancy in the event that a higher BER/SER estimated is computed by BER/SER estimator 628 or a rate having a lower redundancy in the event that a lower BER/SER estimate is computed by BER/SER estimator 628.

Rate-compatible FEC encoder 606 may also generate a set of additional parity bits in response to a NAK. If an error is detected while decoding a block of data received from the transmitter, the rate-adaptor may send a message to the to FEC encoder across feedback path 636 that request additional parity bits to be transmitted. Alternatively, according to some embodiments, rate-compatible FEC encoder 606 may resend and entire block of data in response to a NAK.

Modulator 610 receives codeword symbols 608 from rate-compatible FEC encoder 606 and modulates the codeword symbols 608 for transmission over channel 614. Modulator 610 outputs transmit symbols 612. The modulated transmit symbols 612 are transmitted to the receiver via channel 614.

Demodulator 616 receives as input received symbols 616 that represent the symbols received by the transmitter over channel 614. Demodulator 616 demodulates the received symbols 616 and outputs input soft information 620 to FEC decoder 622. FEC decoder 622 outputs decoded symbols 624 to ED Decoder 626 in embodiments where the transmitted data is ED encoded prior to transmission. ED Decoder 626 decodes the symbols output by FEC decoder 622 and provides the decoded symbols to BER/SER estimator 628. Alternatively, in embodiments where the transmitted data is not ED encoded, FEC decoder 622 outputs output soft information 660 to BER/SER estimator 628.

BER/SER estimator 628 estimated the bit error rate if a binary code is being used or the symbol error rate for non-binary codes. The BER/SER estimator may estimate the bit error rate or the symbol error rate using any of the various techniques disclosed herein. According to some embodiments, BER/SER estimator 628 may be implemented similarly to BER/SER estimator 400 illustrated in FIG. 4 or to BER/SER estimator 550 illustrated in FIG. 5. BER/SER estimator outputs instantaneous estimated BER/SER 630 which is input to rate-adaptor 634.

Rate-adaptor 634 receives instantaneous estimated BER/SER 630 from BER/SER estimator 628 and current code rate 632. Rate-adaptor 634 computes a new code rate for subsequent block of data based upon instantaneous estimated BER/SER 630 and current code rate 632 and outputs a feedback message to rate-compatible FEC encoder 606 via feedback path 636. Rate-adaptor 634 may compute the new rate using any of the various techniques disclosed here. According to some embodiments, rate-adaptor 634 may be implemented similarly to rate-adaptor 200 illustrated in FIG. 2 or rate-adaptor 350 illustrated in FIG. 3. According to some embodiments, rate-adaptor 634 may also send a message to rate-adaptor FEC encoder 606 requesting additional parity bits so that FEC decoder 620 may attempt to decode a received block of data that previously failed due to errors.

One skilled in the art will recognize that in some embodiments, some components, such as the BER/SER estimator 434 and/or the rate-adaptor 434 may be integrated into the transmitter or another device external to both the receiver and the transmitter that is in communication with both the transmitter and the receiver.

2.1. Determining Incremental-Redundancy Using an Estimate of the Instantaneous BER/SER

According to embodiments of the disclosure, techniques are provide for determining incremental-redundancy using an estimate of the instantaneous BER/SER. The amount of redundancy (i.e. the number of parity bits transmitted with each block of data) is increased based upon the bit error rate for embodiments using binary FEC and based upon the symbol error rate for embodiments using non-binary FEC. Techniques for binary FEC codes are addressed first in this section, followed by techniques for non-binary FEC codes.

Consider a rate-compatible binary FEC code family which can encode a block of K data bits using P parity bits, where P can take the values {P_(i), 0<P_(i)≦P_(max)} as described in Section 1.2, where the full-set of P_(max) parity bits (corresponding to a smallest code-rate of R_(min)=K/(K+P_(max))) is punctured to achieve higher code-rates. Consider a particular transmission in which a K-bit block is encoded using P₀ parity bits so that the code-rate is:

$\begin{matrix} {R_{0} = \frac{K}{K + P_{0}}} & \left( {2.1{.1}} \right) \end{matrix}$

Let K_(E, EST) denote an estimate of the number of bit errors in the K-bit message after decoding. Equivalently, one could consider the instantaneous BER estimate,

$\begin{matrix} {\mu_{E,{EST}} = \frac{K_{E,{EST}}}{K}} & \left( {2.1{.2}} \right) \end{matrix}$

At this point we do not make any assumptions as to how this estimate may have been obtained. Techniques for computing such estimates are disclosed in Section 2.2.

The rate-adapter computes a new code-rate R₁ as a function of the current code-rate R₀ and the instantaneous-BER estimate μ_(E,EST). Equivalently, the rate-adapter computes R1 as a function of the block size K, the current number of parity bits P₀, and the estimated number of bit errors in the current block, K_(E,EST):

R ₁ =h(K, P ₀ ,K _(E,EST))=g(R ₀, μ_(E,EST))   (2.1.3)

In one embodiment of the rate-adapter, a new code-rate R₁ is computed as

$\begin{matrix} {R_{1} = {\frac{K - K_{E,{EST}}}{K - K_{E,{EST}} + P_{0}} = \frac{R_{0}\left( {1 - \mu_{E,{EST}}} \right)}{1 - {R_{0}\mu_{E,{EST}}}}}} & \left( {2.1{.4}a} \right) \end{matrix}$

In another embodiment of the rate-adapter, a new code-rate R₁ is computed as

$\begin{matrix} {R_{1} = {\frac{K - K_{E,{EST}}}{K + P_{0}} = {R_{0}\left( {1 - \mu_{E,{EST}}} \right)}}} & \left( {2.1{.4}b} \right) \end{matrix}$

which proposes a lower code-rate than (2.1.4a) for the same BER estimate. For the next block of data, the transmit-side encoder may then choose to switch to rate R₁.

With either embodiment, if the BER estimate is zero, the new code-rate is the same as the current rate, R₁=R₀.

If the estimated BER is too high, the value of the new code-rate R₁ may be lower than R_(min) or even be negative. Various embodiments of the disclosure may be configured to take appropriate action in the even that R₁ is lower than R_(min) or is negative. For example, according to an embodiment, if R₁ falls below a predetermined threshold, such as R_(min), the transmitter may resend the entire block of data with the smallest coding rate. According to other embodiments, the transmitter may temporarily hold off transmitting until the transmitter receives indication that the channel conditions have improved. One skilled in the art will recognize that other configurations may also be possible, such as resending the entire block of data with the smallest coding rate if R₁ falls below a first threshold and holding off transmission until channel conditions improve if R₁ is lower than a second threshold.

If R₁≧R_(min), the FEC encoder is prompted to send an additional set of ΔP parity bits such that the original P₀ parity bits and the requested ΔP parity bits would combine to yield a code-rate (approximately) equal to R₁. Based on the original rate adapter rate equation (2.1.4a), the number of extra parity bits requested is given by

$\begin{matrix} {{{\Delta \; P} = {\frac{\mu_{E,{EST}}}{1 - \mu_{E,{EST}}}P_{0}}},{R \geq R_{\min}}} & \left( {2.1{.5}a} \right) \end{matrix}$

If the rate-adapter of (2.1.2b) is used, the number of extra parity bits requested is given by

$\begin{matrix} {{{\Delta \; P} = {\frac{\mu_{E,{EST}}}{1 - \mu_{E,{EST}}}\left( {P_{0} + K} \right)}},{R \geq R_{\min}}} & \left( {2.1{.5}b} \right) \end{matrix}$

Generalization to Non-binary Codes:

The rate-updater equations (2.1.4a) and (2.1.4b) can be extended to the case of systematic non-binary FEC codes if an estimate μ_(E,EST) of the symbol-error-rate (SER) is available. As in Section 1.1, let |F_(b)| be the size of the encoder input alphabet and |F_(c)| be the size of the encoder output alphabet and M=log|F_(c)|/log|F_(b)|≧1. The rate update of (2.1.2a) generalizes to

$\begin{matrix} {R_{1} = \frac{R_{0}\left( {1 - \mu_{E,{EST}}} \right)}{{R_{0}\left( {1 - \mu_{E,{EST}}} \right)} + {M\left( {1 - R_{0}} \right)}}} & \left( {2.1{.6}a} \right) \end{matrix}$

and that of (2.1.2b) becomes

$\begin{matrix} {R_{1} = \frac{R_{0}\left( {1 - \mu_{E,{EST}}} \right)}{M - {R_{0}\left( {M - 1} \right)}}} & \left( {2.1{.6}b} \right) \end{matrix}$

The update calculations (2.1.6a) and (2.1.6b) are independent of how the instantaneous-BER/SER estimates have been obtained.

In the next section, techniques for instantaneous-BER estimation are provided that may be used in conjunction with the techniques for incremental-redundancy determination described above.

2.2. Estimating Instantaneous BER/SER Based on Mixture Density Model for Bit-/Symbol-Decision Variables

According to an embodiment of the disclosure, techniques for estimating the instantaneous bit error rate for binary codes and symbol error rate for non-binary codes are provided. All systematic binary turbo-like (i.e. modern) codes threshold the bit-decision metrics (or bit-decision variables) to deliver final bit-decisions. As discussed in Section 1.1, any bit-decision metric based on a posteriori probabilities can be converted to a log-likelihood-ratio (LLR), i.e. the logarithm of the ratio of the probability that the bit is a ‘0’ to the probability that the bit is a ‘1’, as computed by the decoder. For this reason, we assume bit-decision variables are a posteriori LLR quantities.

Let λ_(k) denote the bit-decision metric for input bit b_(k), as defined by equation (1.1.2). The bit-decision, b_(EST,k) is obtained by comparing the final decision metric λ_(k), to zero: If λ_(k) is greater than or equal to zero (λ_(k) non-negative), the bit-decision is a ‘0’, i.e. b_(EST,k)=0, otherwise (λ_(k) negative), b_(EST,k)=1

The bit-decision metrics {λ_(k)} are modeled as independent and identically distributed random variables having a mixture-Gaussian probability distribution. The probability density function of {λ_(k)} is therefore approximated by

$\begin{matrix} {{f_{\Lambda}(\lambda)} = {{p_{0}\frac{1}{\sqrt{2\pi}\sigma_{0}}{\exp \left( {- \frac{\left( {\lambda - m_{0}} \right)^{2}}{2\sigma_{0}^{2}}} \right)}} + {p_{1}\frac{1}{\sqrt{2\pi}\sigma_{1}}{\exp \left( {- \frac{\left( {\lambda - m_{1}} \right)^{2}}{2\sigma_{1}^{2}}} \right)}}}} & \left( {2.2{.2}} \right) \end{matrix}$

where p₀ corresponds to the fraction of ‘0’ bits in the input message, m₀ is the mean decision metric for ‘0’ bits (m₀>0), and σ₀ is the standard deviation of the decision metrics for ‘0’ bits. Similarly, p₁ corresponds to the fraction of bits that are ‘1’ in the input message (p₁=1-p₀), m₁ is the mean decision metric for ‘1’ bits (m₁<0), and σ₁ is the standard deviation of the decision metrics for ‘1’ bits.

For a particular block of decoded data, define the output-SNR γ₀ for ‘0’ bits, and output-SNR γ₁ for ‘1’ bits as in equation (2.2.3)

$\begin{matrix} {{{\gamma_{0} = \frac{m_{0}^{2}}{\sigma_{0}^{2}}},\mspace{115mu} {\gamma_{1} = \frac{m_{1}^{2}}{\sigma_{1}^{2}}}}\;} & \left( {2.2{.3}} \right) \end{matrix}$

The quantities γ₀ and γ₁ can be estimated using the K decision metrics λ_(k), k=1,2, . . . K. The pair (γ₀, γ₁) is referred to as simply output-SNR.

We denote the estimate of γ₀ by γ_(0,EST), and the estimate of γ₁ by γ_(1,EST). Also let p_(0,EST) denote the estimated fraction of ‘0’ bits, and p_(1,EST)=1−p_(0,EST) denote the estimated fraction of ‘1’ bits. The pair (γ_(0,EST), γ_(1,EST)) is referred to as simply output-SNR estimate. Based on the output-SNR estimate, we define an instantaneous BER estimate as

μ_(E,EST) =p _(0,EST) Q(√{square root over (γ_(0,EST))})+p _(1,EST) Q(√{square root over (γ_(1,EST))})   (2.2.4)

where

$\begin{matrix} {{Q(x)} = {\frac{1}{\sqrt{2\pi}}{\int_{t = x}^{\infty}{{\exp \left( {{- x^{2}}/2} \right)}{t}}}}} & \left( {2.2{.5}} \right) \end{matrix}$

is the standard Gaussian tail integral function. The Q-function of (2.4) could be computed using an approximate close-form expression or by table look-up. Techniques for computing γ_(i,EST) and p_(i,EST) are described in Section 2.2.1.

The estimate of the number of bit errors in the block based on the instantaneous bit error estimate of equation (2.2.4) is given by

K _(E,EST)=ceil(K·μ _(E,EST))   (2.2.6)

where ceil(x) is the smallest integer greater than or equal to x. Equation (2.2.6) indicates that we estimate the block to be error-free if μ_(E,EST)<1/K where μ_(E,EST) is given by equation (2.2.4) and K is the message length.

Generalization to Non-Binary Codes:

For non-binary codes in which the input symbol alphabet is non-binary, the mixture Gaussian model of equation (2.2.2a) and equation (2.2.2b) could still be applied if {λ_(k)} is redefined as a modified LLR on the input alphabet. In this case, K_(E,EST) represents the number of symbol errors and μ_(E,EST) represents the symbol error rate (SER).

In one embodiment of the modified-LLR computation, the log-ratio of the probability of the most-likely symbol b_(EST,k) (upon decoding) in the alphabet to the sum of the probabilities of the rest of the symbols is computed:

$\begin{matrix} {\lambda_{k} \approx {\log \; \frac{p\left( {b_{k} = {b_{{EST},k}\left\{ {\lambda_{{i\; n},n},{n = 1},\ldots \mspace{11mu},N} \right\}}} \right)}{\sum\limits_{{b \in F_{b}},{b \neq b_{{EST},k}}}{p\left( {b_{k} = {b\left\{ {\lambda_{{i\; n},n},{n = 1},\ldots \mspace{11mu},N} \right\}}} \right)}}}} & \left( {2.2{.7}a} \right) \end{matrix}$

In another embodiment of the modified-LLR computation, the log-ratio of the probability the most-likely symbol (upon decoding) in the alphabet to the second most-likely symbol (upon decoding) is computed:

$\begin{matrix} {\lambda_{k} \approx {\log \; \frac{p\left( {b_{k} = {b_{{EST},k}\left\{ {\lambda_{{i\; n},n},{n = 1},\ldots \mspace{11mu},N} \right\}}} \right)}{\max\limits_{{b \in F_{b}},{b \neq b_{{EST},k}}}{p\left( {b_{k} = {b\left\{ {\lambda_{{i\; n},n},{n = 1},\ldots \mspace{11mu},N} \right\}}} \right)}}}} & \left( {2.2{.7}b} \right) \end{matrix}$

The distribution of the modified-LLRs could still be modeled using a mixture-Gaussian probability density function as in equation (2.2.2a), in which p₀ is the fraction of input symbols for which λ_(k)≧0, and p₁ is the fraction of input symbols for which λ_(k)<0. If the modified-LLR computation of equation (2.2.7b) is used, then p₁=0.

2.2.1 Developing an Estimator for the Output-SNR based on Bit-Decision/Symbol-Decision Variables

There are several techniques that can be used to develop an estimator for the output-SNR based on the bit-decision variables (or symbol decision variables) {λ_(k), k=1, . . . , K}. We disclose two embodiments of output-SNR estimators based on the mixture density model for the decision variables {λ_(k)}.

In one embodiment of the output-SNR estimator (coarse output-SNR estimator), coarse estimates for the mixture probability, means and the standard deviations of the mixture distribution are computed as

$\begin{matrix} {{p_{0,{EST}}^{coarse} = \frac{K_{0}}{K}},{p_{1,{EST}}^{coarse} = {\frac{K_{1}}{K} = {1 - p_{0,{EST}}^{coarse}}}}} & \left( {2.2{.8}a} \right) \\ {{m_{0,{EST}}^{coarse} = \frac{1}{K_{0}}},{\sum\limits_{j:{\lambda_{j} \geq 0}}\lambda_{j}},{m_{1,{EST}}^{coarse} = \frac{1}{K_{1}}},{\sum\limits_{j:{\lambda_{j} < 0}}\lambda_{j}}} & \left( {2.2{.8}b} \right) \\ {{\sigma_{0,{EST}}^{coarse} = \sqrt{\frac{1}{K_{0}}{\sum\limits_{j:{\lambda_{j} \geq 0}}\left( {\lambda_{j} - m_{0,{EST}}^{coarse}} \right)^{2}}}},{\sigma_{1,{EST}}^{coarse} = \sqrt{\frac{1}{K_{1}}{\sum\limits_{j:{\lambda_{j} < 0}}\left( {\lambda_{1} - m_{1,{EST}}^{coarse}} \right)^{2}}}}} & \left( {2.2{.8}c} \right) \end{matrix}$

where K₀=|{λ_(k:)λ_(k)≧0, k=1, . . , K}| is the number of bit-decisions that are ‘0’, and K₁=K−K₀ is the number of bit-decision that are ‘1’. The coarse estimates in (2.2.8a) yield a coarse estimate for the output-SNR as

$\begin{matrix} {{\gamma_{0,{EST}}^{coarse} = \left( \frac{m_{0,{EST}}^{coarse}}{\sigma_{0,{EST}}^{coarse}} \right)^{2}},{\gamma_{1,{EST}}^{coarse} = \left( \frac{m_{1,{EST}}^{coarse}}{\sigma_{1,{EST}}^{coarse}} \right)^{2}}} & \left( {2.2{.8}d} \right) \end{matrix}$

Parameter estimates in equations (2.2.8a-d) can be used in equation (2.2.4) to deliver coarse BER estimates.

In another embodiment of the output-SNR estimator (fine output-SNR estimator), estimates of the mean m and the standard deviation u are obtained iteratively using the expectation-maximization algorithm, in which the estimates of the mean, standard deviation and the mixture probability are updated at every iteration. Let p_(0,EST)(i) denote the estimate of the mixture probability p₀, m_(0,EST)(i), m_(1,EST)(i) denote the estimate of the mean parameters and σ_(0,EST)(i), σ_(1,EST)(i) denote the estimate of the standard deviation parameters at iteration i. The iterations could be initialized using the coarse estimates of equation (2.2.8a-d) as follows:

$\begin{matrix} {{{p_{j,{EST}}(0)} = p_{j.{EST}}^{coarse}},{{m_{j,{EST}}(0)} = m_{j,{EST}}^{coarse}},{{\sigma_{j_{EST}}(0)} = \left( \sigma_{j,{EST}}^{coarse} \right)^{2}},{j = {0,1}}} & \left( {2.2{.9}} \right) \end{matrix}$

At iteration i+1, (i=0,1 . . . ), first an estimate q_(k)(i+1) of the probability that the kth bit is a ‘0’ is computed based on the available mean and standard deviation estimates as well as the estimate of the mixture probability obtained in iteration i. Similarly, q _(k)(i+1) will denote the probability that the kth bit is a ‘1’ based on available parameter estimates:

$\begin{matrix} {{{q_{k}\left( {i + 1} \right)} = \frac{1}{1 + {\frac{1 - {p_{0,{EST}}(i)}}{p_{0,{EST}}(i)}{\exp \left( {- \frac{2\lambda_{k}{m_{EST}(i)}}{\sigma_{EST}^{2}(i)}} \right)}}}},{{{\overset{\_}{q}}_{k}\left( {i + 1} \right)} = {1 - {q_{k}\left( {i + 1} \right)}}}} & \left( {2.2{.10}a} \right) \end{matrix}$

The estimates of the mean, standard deviation and the mixture probability are then updated as follows:

$\begin{matrix} {{{m_{0,{EST}}\left( {i + 1} \right)} = \frac{\sum\limits_{k = 1}^{K}{{q_{k}\left( {i + 1} \right)}\lambda_{k}}}{\sum\limits_{k = 1}^{K}{q_{k}\left( {i + 1} \right)}}},{{m_{1,{EST}}\left( {i + 1} \right)} = \frac{\sum\limits_{k = 1}^{K}{{{\overset{\_}{q}}_{k}\left( {i + 1} \right)}\lambda_{k}}}{\sum\limits_{k = 1}^{K}{{\overset{\_}{q}}_{k}\left( {i + 1} \right)}}}} & \left( {2.2{.10}b} \right) \\ {{{\sigma_{0,{EST}}^{2}\left( {i + 1} \right)} = \frac{\sum\limits_{k = 1}^{K}{{q_{k}\left( {i + 1} \right)}\left( {\lambda_{k} - {m_{0,{EST}}\left( {i + 1} \right)}} \right)^{2}}}{\sum\limits_{k = 1}^{K}{q_{k}\left( {i + 1} \right)}}}{{\sigma_{1,{EST}}^{2}\left( {i + 1} \right)} = \frac{\sum\limits_{k = 1}^{K}{{{\overset{\_}{q}}_{k}\left( {i + 1} \right)}\left( {\lambda_{k} - {m_{1,{EST}}\left( {i + 1} \right)}} \right)^{2}}}{\sum\limits_{k = 1}^{K}{{\overset{\_}{q}}_{k}\left( {i + 1} \right)}}}} & \left( {2.2{.10}c} \right) \\ {{{p_{0,{EST}}\left( {i + 1} \right)} = {\frac{1}{K}{\sum\limits_{k = 1}^{K}{q_{k}\left( {i + 1} \right)}}}},{{p_{1,{EST}}\left( {i + 1} \right)} = {1 - {p_{0,{EST}}\left( {i + 1} \right)}}}} & \left( {2.2{.10}d} \right) \end{matrix}$

The fine estimates for the mean and the standard deviation converge within a few iterations for most cases. The resulting fine estimate of the output-SNR of the decoder after iteration I is defined similarly to equation (2.2.8d)

$\begin{matrix} {{\gamma_{0,{EST}}^{fine} = \frac{m_{0,{EST}}^{2}(I)}{\sigma_{0,{EST}}^{2}(I)}},\mspace{56mu} {\gamma_{1,{EST}}^{fine} = \frac{m_{0,{EST}}^{2}(I)}{\sigma_{0,{EST}}^{2}(I)}}} & \left( {2.2{.10}e} \right) \end{matrix}$

Parameter estimates in equations (2.2.10b-d) can be used in equation (2.2.4) to deliver fine BER estimates.

In another embodiment of the output-SNR estimator (output-SNR estimator with symmetry condition), computation is further simplified using the symmetry condition which states that the variance σ_(j) ² and the mean m_(j) parameters satisfy

σ_(j) ²2m_(j), j=0,1   (2.2.11)

The symmetry condition has been shown to be approximately valid in a number of scenarios. When the symmetry condition holds, the output-SNR can be estimated by using the mean estimate only:

$\begin{matrix} {{\gamma_{j,{EST}}^{symmetric} = \sqrt{\frac{m_{j,{EST}}}{2}}},\mspace{59mu} {j = {0,1}}} & \left( {2.2{.12}} \right) \end{matrix}$

where m_(j,EST) can be obtained using (2.2.8b).

Apart from its aforementioned use in incremental-redundancy (Section 2.1), BER/SER estimation based on output-SNR estimation enables a decremental-redundancy scheme in which a higher code-rate (lower redundancy) may be proposed if the error-detection circuit (or the BER estimator, if there is no error-detection) indicates successful decoding. In the incremental-only-redundancy scheme, a potential decrease in redundancy (increased code-rate) is not readily available following a successfully decoded block.

An embodiment of incremental/decremental redundancy using BER/SER estimation (Section 2.1) based on output-SNR estimation (Section 2.2) is disclosed next in Section 2.3.

2.3. Determining Incremental-Redundancy Based on an Estimate of the Instantaneous Bit Error Rate/Symbol Error Rate using a Gaussian Mixture Density Model

An incremental redundancy scheme using instantaneous BER/SER estimates based on (2.2.2b) was described in Section 2.1. In this scheme, if the BER/SER estimator (or the error-detection decoder, or both) indicated a presence of errors, a rate-adapter was used to compute a new code rate to retransmit the data. If the system was employing a rate-compatible systematic code family, based on the current code-rate and the computed new code-rate, an additional set of parity bits/symbols is requested from the transmit-side.

According to a preferred embodiment of the incremental/decremental redundancy method illustrated in FIG. 4, the instantaneous BER/SER estimator is based on the output-SNR computation (Section 2.2.1), and redundancy is incremented using the rate adapter of (2.1.4.b), when the BER/SER estimator indicates the presence of errors. In this case, a new and possibly lower code-rate is computed as

$\begin{matrix} {R_{1} = {\max \left\{ {\frac{R_{0}\left( {1 - \mu_{E,{EST}}} \right)}{M - {R_{0}\left( {M - 1} \right)}},R_{\min}} \right\}}} & \left( {2.3{.1}a} \right) \end{matrix}$

where M=log(|F_(c)|)/|log(|F_(b)|) for non-binary codes, and M=1 for binary codes and R_(min) is the smallest rate that the FEC encoder uses.

In the preferred embodiment of the incremental/decremental redundancy method, when the BER/SER estimator (or the error-detection decoding, or both) indicates no errors, the estimate for the output-SNR can be used to decrease the redundancy (increase the code-rate) for the next transmission. In this case, the rate-adapter computes a (possibly) higher rate based on

$\begin{matrix} {R_{1} = {\max \left\{ {R \geq {R_{0}\text{:}{K\left( {{p_{0,{EST}}{Q\left( \sqrt{10^{- {({R - R_{0}})}}\gamma_{0,{EST}}} \right)}} + {p_{1,{EST}}{Q\left( \sqrt{10^{- {({R - R_{0}})}}\gamma_{1,{EST}}} \right)}}} \right)}} < 1} \right\}}} & \left( {2.3{.1}\; b} \right) \end{matrix}$

where the Q function is defined in (2.2.5) and R₀ is the original code-rate.

2.4. Numerical Results

The incremental/decremental redundancy scheme has been tested using the F-LDPC code of TrellisWare Technologies. FIG. 7 is a block diagram of an encoder 700 for the F-LDPC. Encoder 700 receives K data bits 702 to be encoded. The K data bits are input to outer encoder 704 and the encoded output from outer encoder 704 is input into bit repeater 706. The outputs from bit repeater 706 are then converted from parallel outputs to a single serial output by parallel to serial converter 708. The output from parallel to serial converter 708 is then input to interleaver 710. The interleaved output from interleaver 710 is then input to inner encoder 712. The encoded output from inner encoder 712 is then coarse punctured at coarse puncturing module 714. The coarse punctured output from coarse puncturing module 714 is then input into fine puncturing module 716. Fine puncturing module 718 also receives puncture index 718 as an input. The output of fine puncturing module 718 is a set of parity bits 720. The parity bits 720 and K systematic bits 722, which represent the data portion of the message, are transmitted across the communication channel to the receiver.

The F-LDPC is a rate-compatible systematic code that can generate as many as 2K parity bits for an input message block of K bits, resulting in a minimum code-rate of R_(min)=1/3. A fine set of higher code-rates is obtained by periodically puncturing the set of 2K parity bits using two-level (coarse- and fine-) puncturing. The coarse-puncturing simply punctures the first J-1 bits out of every group of J parity bits, where J can take on the values 1, 2, 4, 8, 16, 32. There are 2K/J non-punctured parity bits remaining after coarse puncturing. If J=1, coarse puncturing is disabled. The resulting non-punctured parity sequence is further punctured using one of eight periodic fine-puncturing patterns of length 16. The fine puncturing patterns used in the experiments are given by

-   -   F₀=(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)     -   F₁=(0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)     -   F₂=(0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1)     -   F₃=(0,1,1,1,0,1,1,1,0,1,1,1,1,1,1,1)     -   F₄=(0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1)     -   F₅=(0,1,0,1,0,1,1,1,0,1,1,1,0,1,1,1)     -   F₆=(0,1,0,1,0,1,1,1,0,1,0,1,0,1,1,1)     -   F₇=(0,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1)         where a ‘0’ value indicates that bit position is punctured.         Pattern F_(k) punctures k bits out of 16, for q=0,1,2, . . . 7.         With F₀, there is no fine-puncturing.

The coarse- and fine-puncturing stages yields 48 code rates between R_(min)=1/3 and R_(max)=256/265. The code-rate can be computed from the J value and the puncturing index q (which determines the fine-puncturing pattern F_(q)) as:

$\begin{matrix} {{R\left( {J,q} \right)} = \frac{J}{J + {2\left( {1 - \frac{q}{16}} \right)}}} & \left( {2.4{.1}} \right) \end{matrix}$

For example, for J=1, q=4, R=2/5.

For simulation of throughput performance, the output of the F-LDPC is mapped onto the binary signal set {−1,+1}. Let {c_(j)} denote the output from the F-LDPC in a particular transmission, and {x_(j)} denote the corresponding transmitted signal, where x_(j)=1 if c_(j)=0, and x_(j)=−1 if c_(j)=1. Two channel models are considered.

The additive-white-Gaussian noise (AWGN) channel corrupts the transmitted signal by adding independent noise samples to each x_(j) where each noise sample has a Gaussian distribution with a mean of zero and standard deviation of σ_(w). The channel input-output relationship is therefore given by

y _(j) =x _(j) +w _(j)   (2.4.2)

where {w_(j)} is the noise sequence. In accordance with (1.1) the decoder input LLR values are then given by

$\begin{matrix} {\lambda_{j} = \frac{2y_{j}}{\sigma_{W}^{2}}} & \left( {2.4{.3}} \right) \end{matrix}$

The AWGN channel idealizes a scenario where the channel is static, which is rarely the case in wireless communications where the channel diminishes the received signal strength in a time-varying fashion.

The varying signal-strength is often represented by a multiplicative factor called the channel gain, or channel fade. The mathematical model for this scenario is given by

y _(j) =h _(j) x _(j) +w _(j)   (2.4.4a)

where h_(j) is the channel gain for symbol j.

A simple first-order autoregressive model for the time-varying nature of the channel gain is

h _(j) =ρh _(j−1) +n _(j)   (2.4.4b)

where ρ is the correlation coefficient between adjacent channel gain values and {n_(j)} is a sequence of independent samples from a Gaussian distribution with mean zero and variance 1−ρ². A shorthand notation for this model is AR1(ρ).

With perfect knowledge of the channel gains at the receive-end, the decoder input LLR values are given by

$\begin{matrix} {\lambda_{j} = \frac{2h_{j}y_{j}}{\sigma_{W}^{2}}} & \left( {2.4{.5}} \right) \end{matrix}$

The AWGN channel can be obtained from equations (2.4.4a)-(2.4.5) by setting h_(j)=1. For both the AWGN and the AR1 channel, the channel signal-to-noise ratio (SNR) is defined in decibels as

$\begin{matrix} {{{SNR}({dB})} = {10{\log_{10}\left( \frac{2}{\sigma_{W}^{2}} \right)}}} & \left( {2.4{.6}} \right) \end{matrix}$

For experiments with the time-varying channel models, a period of D_(ACK) symbols is used to model the time from the time the decoder issues an ACK/NAK to the time the next decoding epoch starts. During this period, the channel continues to change according to (2.4.4). Each ACK/NAK is assumed to be of length 16 bits, which is factored into the throughput computation.

Error-detection mechanism producing the ACK/NAK messages is assumed to be ideal with no miss of block errors. The throughput penalty of the error-detection bits for each block of data is assumed to be k_(ED)=16 bits.

In all experiments, the rate-adapter described by equations (2.3.1a) and (2.3.1b) (with α=2) is used.

FIG. 8 is a chart that depicts the throughput of the incremental-decremental redundancy scheme described in Section 2.3 for the AWGN channel as a function of channel SNR K=1024 bits, as well as the maximum throughput possible with a binary signal set, labeled as capacity, according to an embodiment of the disclosure. At SNRs less than −3.5 dB, the transmitted block is in error with high probability even with rate-1/3 encoding, resulting in requests for retransmissions of the data block, therefore the throughput is less than 1/3. For SNR values between −3.5 dB and 0.5 dB, channel conditions are good enough for rate-1/3 encoding, but not any higher. With increasing SNR, successful decoding with higher code-rates becomes statistically significant and the throughput increases. At high SNR, almost all blocks can be transmitted successfully with the highest code-rate, and the throughput of the practical scheme converges to a value very close to R_(max)=256/265≅0.966 bits per symbol.

FIG. 9 is a chart depicting the throughput numbers for two different AR1 scenarios. For the slowly-varying AR1 channel, ρ=0.9999. For the faster-varying channel, ρ=0.995. Sample channel-gain sequences are plotted in FIG. 10, illustrating the dynamics of the channel for both cases, according to an embodiment of the disclosure.

While the embodiments described above may make reference to specific hardware and software components, those skilled in the art will appreciate that different combinations of hardware and/or software components may also be used and that particular operations described as being implemented in hardware might also be implemented in software or vice versa.

Computer programs incorporating various features of the disclosure may be encoded on various computer readable media for storage and/or transmission; suitable media include magnetic disk or tape, optical storage media such as compact disk (CD) or DVD (digital versatile disk), flash memory, and the like. Such programs may also be encoded and transmitted using carrier signals adapted for transmission via wired, optical, and/or wireless networks conforming to a variety of protocols, including the Internet. Computer readable media encoded with the program code may be packaged with a compatible device or provided separately from other devices (e.g., via Internet download).

Thus, although the invention has been described with respect to specific embodiments, it will be appreciated that the invention is intended to cover all modifications and equivalents within the scope of the following claims. 

1. A method for transmitting data, the method comprising: transmitting a first set of data encoded at a first data rate to a receiver, wherein the first block of data includes a first number of data bits and a first number of parity bits; receiving a first estimated number of bit errors for the first set of data from the receiver; determining a first instantaneous bit error rate (BER) for the first set of data based upon the estimated number of bit errors received from the receiver; determining a second data rate as a function of the first data rate and the first instantaneous BER; transmitting a second set of data encoded at the second data rate to the receiver.
 2. The method of claim 1 wherein the first set and second set of data are encoded with a binary forward error correction (FEC) code.
 3. The method of claim 1 wherein if the instantaneous bit error rate (BER) is zero, the first data rate is equal to the second data rate.
 4. The method of claim 1 wherein determining the first instantaneous bit error rate (BER) comprises dividing the estimated number of bit errors by the first number of data bits in the first set of data.
 5. The method of claim 1 wherein the second data rate (R₁) is equal to (R₀(1=μ_(E,EST)))/(1−R₀μ_(E,EST)), wherein R₀ represents the first data rate and μ_(E,EST) represents the first instantaneous BER.
 6. The method of claim 1 wherein the second data rate (R₁) is equal to R₀(1−μ_(E,EST)), wherein R₀ represents the first data rate and μ_(E,EST) represents the first instantaneous BER.
 7. The method of claim 1 wherein the second data rate is computed as function of the first number of data bits, the first number of parity bits, and the first estimated number of bit errors.
 8. The method of claim 7 wherein the second data rate is equal to (K−K_(E,EST))/(K+P₀), wherein P₀represents the first number of parity bits, K_(E,EST) represents the first estimated number of bit errors, and K represents the first number of data bits.
 9. The method of claim 1 further comprising: prior to transmitting the second set of data, determining whether the second data rate is less than a minimum data rate; and if the second data rate is less than the minimum data rate, transmitting the second block of data to the receiver at the minimum data rate.
 10. The method of claim 1 further comprising: prior to transmitting the second block of data, determining whether the second data rate (R₁) is less than a minimum data rate; if the second data rate is not less than the minimum data rate, determining whether the first instantaneous bit error rate (BER) exceeds an error rate threshold; and if the first instantaneous bit error rate (BER) exceeds the error rate threshold, determining an additional number of parity bits to send to the receiver, such that when the additional number of parity bits are combined with the first number of parity bits at the receiver, yields an effective data rate for the first data block equal to the second data rate; and transmitting the additional number of parity bits to the receiver.
 11. The method of claim 10, wherein the additional number of parity bits to send to the receiver is equal to P₀(1−μ_(E,EST)/(1−μ_(E,EST))), and wherein P₀ represents the first number of parity bits, and μ_(E,EST) represents first BER.
 12. The method of claim 10, wherein the additional number of parity bits to send to the receiver is equal to (P₀+K)(μ_(E,EST)/(1−μ_(E,EST))), and wherein P₀ represents the first number of parity bits, μ_(E,EST) represents first BER, and K represents the first number of data bits.
 13. The method of claim 1 wherein the first and second set of data is encoded with a non-binary forward error correction (FEC) code, and wherein μ_(E,EST) equals a first instantaneous symbol error rate (SER).
 14. The method of claim 13 wherein the second data rate is equal to (R₀(1−μ_(E,EST)))/(M−R₀(M−1)) wherein M is equal to log|F_(c)|/log|F_(b)|, wherein F_(c) is a size of an encoder input alphabet and F_(b) is the size of a encoder output alphabet, and wherein R₀ represents the first data rate.
 15. The method of claim 1 wherein the first estimated number of bit errors is equal to ceil(K·μ_(E,EST)) wherein (K_(E,EST)) represents the first estimated number of bit errors, wherein ceil(K·μ_(E,EST)) is the smallest integer greater than or equal to (K·μ_(E,EST)), and wherein the first block is estimated to be error free if the first estimated number of bit errors is less than (1/K), wherein K represents the first number of data bits.
 16. The method of claim 1 further comprising: determining a bit-decision metric for each bit comprising the first block of data; comparing the bit-decision metric to a threshold value; and assigning a value to each bit based upon the results of the comparison of the bit-decision metric to the threshold value.
 17. The method of claim 1 wherein the first instantaneous bit error rate (BER) is determined based upon an estimated signal to noise ratio of the first block of data received by the receiver.
 18. The method of claim 17 wherein the instantaneous BER equals the standard Gaussian tail integral of the square root of the estimated signal to noise ratio.
 19. The method of claim 17 wherein determining the estimated signal-to-noise ratio of the output signal of the receiver further comprises: determining a coarse estimate for mean and standard deviation parameters of a Gaussian mixture density model for the decision variables.
 20. The method of claim 17 further comprising: approximating a solution to a modified log-likelihood-ratio (LLR) function to determine the value of each bit of the first block of data.
 21. The method of claim 1 further comprising: determining the value of each bit of the received first block of data using a modified log-likelihood-ratio (LLR) function to determine the value of each word of the first block of data, the modified LLR function using the log-ratio of a probability of a most-likely symbol to the sum of the probabilities of the rest of the symbols.
 22. The method of claim 1 further comprising: determining the value of each bit of the received first block of data using a modified log-likelihood-ratio (LLR) function to determine the value of each word of the first block of data, the modified LLR function using the log-ratio of a probability of a most-likely symbol to the probability of the second most-likely symbol.
 23. The method of claim 1 wherein determining the estimated signal-to-noise ratio of output signal of the receiver includes iteratively determining mean and standard deviation values using an expectation-maximization algorithm.
 24. The method of claim 1 further comprising determining a coarse estimated signal to noise ratio.
 25. The method of claim 24 wherein determining the coarse estimated SNR further comprises: determining an estimated mean parameter; determining an estimated standard deviation parameter; and dividing the square of the estimated mean parameter by the square of the estimated standard deviation parameter.
 26. The method of claim 1 further comprising determining a fine estimated signal to noise ratio.
 27. The method of claim 26 wherein determining the fine estimated SNR further comprises: iteratively determining a fine estimated mean parameter, a fine estimated standard deviation parameter, and a estimated mixture probability; and dividing the square of the estimated mean parameter by the square of the estimated standard deviation parameter.
 28. The method of claim 1 wherein determining a second data rate as a function of the first data rate and the first instantaneous BER further comprises: determining a proposed rate, wherein the proposed rate is equal to (R₀(1−μ_(E,EST)))/(M−R₀(M−1)), wherein M=1 if the first data packet is encoded with a binary code, and wherein M=log|F_(c)|/log|F_(b)|, where F_(c) is a size of an encoder input alphabet and F_(b) is the size of a encoder output alphabet, if the first data packet is encoded with a non-binary code, wherein R₀ represents the first data rate, R₁ is represents the second data rate, and μ_(E,EST) represents the first instantaneous BER; selecting the larger of the proposed rate and a minimum data rate (R_(min)) as the second data rate.
 29. The method of claim 28 wherein if the first block of data was encoded with a non-binary code, an instantaneous symbol error rate (SER) determined by the receiver instead of the first instantaneous BER, and wherein μ_(E,EST) represents the instantaneous SER.
 30. The method of claim 1 wherein determining a second data rate further comprises: determining, when the first instantaneous BER indicates that no errors occurred in the transmission, a data rate that includes less redundancy than the first data rate.
 31. The method of claim 30 wherein determining a data rate that includes less redundancy than the first data rate comprises: determining an estimated signal to noise ratio of the first block of data received by the receiver; determining a proposed rate parameter based upon the first data rate, the estimated signal to noise ratio, and a greediness level exponent value; determining the second data rate by based upon the product of the first number of data bits in the first data block and the results from a standard Gaussian tail integral function computed using the proposed rate parameter.
 32. A receiver configured to: receive a first set of data encoded at a first data rate from a transmitter, wherein the first set of data includes a first number of data bits and a first number of parity bits; determine a first estimated number of bit errors for the first set of data received by the receiver; determine a first instantaneous bit error rate for the first set of data based upon the estimated number of bit errors in the first block of data; determine a second data rate as a function of the first data rate and the first instantaneous; transmit a feedback message to the transmitter indicating that the transmitter should transmit subsequent blocks of data to the receiver using the second data rate; and receive a second block of data from the transmitter encoded at the second data rate.
 33. A system for data communication, the system comprising: a receiver; and a transmitter configured to transmit data to the receiver across a communication channel; wherein the transmitter is configured to: transmit a first set of data encoded at a first data rate to the receiver, wherein the first set of data includes a first number of data bits and a first number of parity bits; receive feedback data from the receiver indicative of channel conditions in response to transmitting the first set of data to receiver; and transmit a second set of data encoded at a second data rate to the receiver, wherein the second data rate is determined based upon the feedback data received from the receiver; wherein the receiver is configured to: receive the first set of data encoded at the first data rate from the transmitter; determine a first estimated number of bit errors for the first set of data; determine a first instantaneous bit error rate for the first set of data based upon the estimated number of bit errors in the first block of data; determine a second data rate as a function of the first data rate and the first instantaneous; transmit a feedback message to the transmitter requesting that the transmitter transmit subsequent blocks of data to the receiver using the second data rate; and receive the second set of data from the transmitter encoded at the second data rate. 